package cn.tedu.di;


import org.springframework.beans.factory.annotation.Autowired;

import java.lang.reflect.Field;

//自己实现DI --模拟Autowired注解
public class MyDI {
    public static void main(String[] args) throws Exception {
        Class c = Class.forName("cn.tedu.di.Student");
        //获取Student类里的所有属性（name/teacher）
        Field[] fs = c.getDeclaredFields();//Class提供的getDeclaredFields
        //遍历得到每个属性Field
        for (Field f : fs) {
            Autowired a=f.getAnnotation(Autowired.class);
        //判断那个属性有@Autowired注解，就给那个设置new Teacher（），if(有注解){f.set() f.get()}
            if(a!=null){//有注解
                Object obj=c.newInstance();
                f.setAccessible(true);//开启私有的访问权限
                f.set(obj,new Teacher());//给属性设置值
            }
        }


    }
}
